using System;
using System.Collections.Generic;
using ns26;
using ns27;
using Triton.Game.Mono;

namespace Triton.Game.Mapping
{
	[Attribute38("CollectibleCardFilter")]
	public class CollectibleCardFilter : MonoClass
	{
		public enum FilterMask
		{
			ALL = -1,
			NONE = 0,
			PREMIUM_NORMAL = 2,
			PREMIUM_GOLDEN = 4,
			PREMIUM_ALL = 6,
			OWNED = 8,
			UNOWNED = 0x10
		}

		public List<TAG_CARD_SET> m_filterCardSets => method_3<Class250<TAG_CARD_SET>>("m_filterCardSets")?.method_25();

		public List<TAG_CLASS> m_filterClasses => method_3<Class250<TAG_CLASS>>("m_filterClasses")?.method_25();

		public List<TAG_CARDTYPE> m_filterCardTypes => method_3<Class250<TAG_CARDTYPE>>("m_filterCardTypes")?.method_25();

		public List<FilterMask> m_filterMasks => method_3<Class270<FilterMask>>("m_filterMasks")?.method_25();

		public string m_filterText => method_4("m_filterText");

		public bool m_filterIsHero => method_2<bool>("m_filterIsHero");

		public DeckRuleset m_deckRuleset => method_3<DeckRuleset>("m_deckRuleset");

		public CollectibleCardFilter(IntPtr address, string className)
			: base(address, className)
		{
		}

		public CollectibleCardFilter(IntPtr address)
			: this(address, "CollectibleCardFilter")
		{
		}

		public static string ConvertEuropeanCharacters(string input)
		{
			return MonoClass.smethod_12(TritonHs.MainAssemblyPath, "", "CollectibleCardFilter", "ConvertEuropeanCharacters", input);
		}

		public static string RemoveDiacritics(string input)
		{
			return MonoClass.smethod_12(TritonHs.MainAssemblyPath, "", "CollectibleCardFilter", "RemoveDiacritics", input);
		}

		public void SetDeckRuleset(DeckRuleset deckRuleset)
		{
			method_8("SetDeckRuleset", deckRuleset);
		}

		public bool CardSetFilterIncludesWild()
		{
			return method_11<bool>("CardSetFilterIncludesWild", Array.Empty<object>());
		}

		public bool CardSetFilterIsAllStandardSets()
		{
			return method_11<bool>("CardSetFilterIsAllStandardSets", Array.Empty<object>());
		}

		public void FilterOnlyOwned(bool owned)
		{
			method_8("FilterOnlyOwned", owned);
		}

		public void FilterByMask(TAG_PREMIUM premiumType)
		{
			method_9("FilterByMask", new Class276.Enum20[1] { Class276.Enum20.ValueType }, premiumType);
		}

		public void FilterOnlyCraftable(bool onlyCraftable)
		{
			method_8("FilterOnlyCraftable", onlyCraftable);
		}

		public void FilterSearchText(string searchText)
		{
			method_8("FilterSearchText", searchText);
		}

		public bool HasSearchText()
		{
			return method_11<bool>("HasSearchText", Array.Empty<object>());
		}

		public void FilterHero(bool isHero)
		{
			method_8("FilterHero", isHero);
		}

		public CollectionManager.FindCardsResult GenerateResults()
		{
			return method_14<CollectionManager.FindCardsResult>("GenerateResults", Array.Empty<object>());
		}
	}
}
